package modelo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


public class ProductoDAO {
        
        public ProductoDAO() {
                super();
        }

        public void registrarProducto(Producto producto) {
                String tiraSQL = "INSERT INTO producto "+"(codproducto,descripcionprod,codcategoria,fecharegistro,precio,cantidad) "+
                "VALUES "+
                                                 "('"+producto.getCodProducto()+"','"+producto.getDescripcionProd()+"','"+producto.getCodCategoria()
                                                +"','"+producto.getFechaRegistro()+"','"+producto.getPrecio()+"','"+ producto.getCantidad()+"')";
                Conexion.ejecutar(tiraSQL);
        }
        
        public List<Producto> consultarProductos() {
                List<Producto> productos = new ArrayList<Producto>();
                String tiraSQL = "SELECT * FROM producto";
                ResultSet resultSet = Conexion.consultar(tiraSQL);              
                try {
                        while (resultSet.next()) {
                                String codProducto = resultSet.getString("codproducto");
                                String descripcionProducto = resultSet.getString("descripcionprod");
                                String codCategoria = resultSet.getString("codcategoria");
                                String fechaRegistro = resultSet.getString("fecharegistro");
                                int cantidad = Integer.parseInt(resultSet.getString("cantidad"));
                                float precio = resultSet.getFloat("precio");
                                Producto producto = new Producto(codProducto, descripcionProducto, codCategoria,fechaRegistro, precio,cantidad);
                                productos.add(producto);
                        }
                } catch (SQLException e) {
                        e.printStackTrace();
                }
                return productos;
        }

        public void registrarDetalleProducto(DetalleProducto detProducto){ 
                String tiraSQL = "INSERT INTO detalleproducto "+"(codproducto,codingrediente,descripcioning,cantidading) "+
                "VALUES "+
                "('"+detProducto.getCodProducto()+"','"+ detProducto.getCodIngrediente() +"','"+detProducto.getDescripcionIng() +"','"+ detProducto.getCantidadIng() +"')";
                Conexion.ejecutar(tiraSQL);
        }

        public List<String> buscarProductosCategoria(String codCateg) {
                List<String> descripcionesProd = new ArrayList<String>();
                String descripcionProd = "";
                String tiraSQL = "SELECT descripcionprod FROM producto where codcategoria = '"+codCateg+"'";
                ResultSet resultSet = Conexion.consultar(tiraSQL);                      
                try {
                        while (resultSet.next()) {
                    descripcionProd = resultSet.getString("descripcionprod");
                                descripcionesProd.add(descripcionProd);
                        }
                } catch (SQLException e) {
                        e.printStackTrace();
                }
                return descripcionesProd;
        }
        
        public  List<String> consultarProductosNombre() {
                List<String> productos = new ArrayList<String>();
        String tiraSQL = "SELECT * From producto";
        ResultSet resultSet = Conexion.consultar(tiraSQL);              
        try {
                while (resultSet.next()) {
                     String descripcionProd = resultSet.getString("descripcionprod");
                          productos.add(descripcionProd);
                }
        } catch (SQLException e) {
                e.printStackTrace();
        }
        return productos;
    }
        
        public String buscarCodProducto(String descProd){
                boolean encontrado = false;
                String codProducto = "";
                String descripcionProd;
                String tiraSQL = "SELECT codproducto,descripcionprod FROM producto";
                ResultSet resultSet = Conexion.consultar(tiraSQL);              
                try {
                        while (resultSet.next() && encontrado == false ) { //Mientras el resulSet tengo otro dato haga.
                                descripcionProd = resultSet.getString("descripcionprod");
                                if(descProd.compareTo(descripcionProd) == 0)
                                {       
                                  encontrado = true;
                                  codProducto = resultSet.getString("codproducto");
                                }
                        }
                } catch (SQLException e) {
                        e.printStackTrace();
                }
                return codProducto;
        }

        public Producto consultarProducto(String codigo) {
                Producto producto = new Producto();
                boolean encontrado = false;
                String tiraSQL = "SELECT * FROM producto where codproducto = '" + codigo + "'";
                ResultSet resultSet = Conexion.consultar(tiraSQL);              
                try {
                        while (resultSet.next() && encontrado == false) {
                                String codProducto = resultSet.getString("codproducto");
                                String descripcionProducto = resultSet.getString("descripcionprod");
                                String fechaRegistro = resultSet.getString("fecharegistro");
                                String codCateg = resultSet.getString("codcategoria");
                                float precio = resultSet.getFloat("precio");
                                int cantidad = Integer.parseInt(resultSet.getString("cantidad"));
                                if(codigo.compareTo(codProducto) == 0){
                                   encontrado = true; 
                                   producto = new Producto(codProducto,descripcionProducto, codCateg, fechaRegistro,precio,cantidad);
                                }
                        }
                } catch (SQLException e) {
                        e.printStackTrace();
                }
                return producto;
        }
}
